package gvo.rero;

import gvo.basicDatatypes.AutorenDat;
import gvo.basicDatatypes.GVOall;
import gvo.basicDatatypes.StichwortDat;
import gvo.util.GVOstore;

import java.util.ArrayList;

public class MARC_Entry {
	public ArrayList<MarcTag> mts;
	public boolean isFilled=false;
	public GVOall gvoall = new GVOall();
	public GVOstore gvostore;
	public MARC_Entry(GVOstore gvostore) {
		this.gvostore = gvostore;
		
	}
	public void assignMt(MarcTag mt){
		
		switch (mt.kind){
		case MarcTag.UNDEF:
			break;
		case MarcTag.ANMERKUNG:
			this.gvoall.buch.setAnmerkung(this.gvoall.buch.getAnmerkung()+mt.value + "\n");
			break;
		case MarcTag.AUSGABE:
			this.gvoall.buch.setAusgabeVersion(this.gvoall.buch.getAusgabeVersion()+ mt.value + "\n");
			break;
		case MarcTag.AUTOR:
			this.gvoall.autoren.add(new AutorenDat(mt.value));
			//this.gvoall.autoren.add(gvostore.sqlTool.checkAutorenDat(mt.value));
			break;
		case MarcTag.ENTHALTENIN:
			this.gvoall.buch.setEnthaltenIn(this.gvoall.buch.getEnthaltenIn()+ mt.value + "\n");
			break;
		case MarcTag.ISBN:
			this.gvoall.buch.setIsbnPreis(mt.value);
			break;
		case MarcTag.KOLLATION:
			this.gvoall.buch.setKollation(this.gvoall.buch.getKollation()+ mt.value + "\n");
			break;
		case MarcTag.ORTJAHR:
			this.gvoall.buch.setOrtJahr(mt.value);
			break;
		case MarcTag.REIHE:
			this.gvoall.buch.setReihe(this.gvoall.buch.getReihe()+ mt.value + "\n");
			break;
		case MarcTag.RERONR:
			this.gvoall.buch.setReroNr(mt.value);
			this.gvoall.buch.isInDB = gvostore.sqlTool.checkReroNr(mt.value);
			this.gvoall.buch.isVerified = true;
			break;
		case MarcTag.SCHLAGWORT:
			this.gvoall.stichworte.add(new StichwortDat(mt.value));
			//this.gvoall.schlagworte.add(gvostore.sqlTool.checkStichwortDat(mt.value));
			break;
		case MarcTag.TITEL:
			this.gvoall.buch.setTitel(mt.value);
			//this.gvoall.buch.isInDB = gvostore.sqlTool.checkBuchDat(mt.value);
			//this.gvoall.buch.isVerified = true;
			break;
		}
	}
	public void analyseMTs(){
		
		for (MarcTag mt: mts){
			assignMt(mt);
		}
		isFilled=true;
	}
	public void printMTs(){
		for (MarcTag mt: mts){
			System.out.println("MT:"+mt.nr + " "+ mt.value);
		}
	}
	
	public String toString(){
		if(isFilled){
			return this.gvoall.buch.getTitel();
		}else {
			return "filling ...";
		}
	}
}
